package com.eoner.baselib.widget.navgation;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.eoner.baselib.R;
import com.eoner.baselib.utils.status.StatusBarUtils;

/**
 * 文件名：FCNavigationBar
 * 描 述：自定义公用导航栏
 * 作 者：gyq
 * 时 间：2021-1-22
 */
public class FCNavigationBar extends FrameLayout implements View.OnClickListener {

    private View mRootView;
    //左边按钮
    private FrameLayout mLeftBtn;
    //左边按钮图片
    private ImageView mLeftBtnImage;
    //标题
    private TextView mTitleView;
    //右边文字按钮
    private TextView mRightTextBtn;
    //右边图片按钮
    private LinearLayout mRightBtn;
    //右边按钮图片
    private ImageView mRightBtnImage;
    //line
    private View mLineView;

    private IFCNavigationListener mGzgNavigationListener;

    public void setGzgNavigationListener(IFCNavigationListener mGzgNavigationListener) {
        this.mGzgNavigationListener = mGzgNavigationListener;
    }

    public FCNavigationBar(@NonNull Context context) {
        super(context);
        mRootView = LayoutInflater.from(context).inflate(R.layout.view_base_navbar, null);
        addView(mRootView);
        initUI();
    }

    public FCNavigationBar(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        mRootView = LayoutInflater.from(context).inflate(R.layout.view_base_navbar, null);
        addView(mRootView);
        initUI();
    }

    private void initUI() {
        mLeftBtn = findViewById(R.id.fl_base_nav_left);
        mLeftBtn.setOnClickListener(this);
        mLeftBtnImage = findViewById(R.id.img_base_nav_left);
        mTitleView = findViewById(R.id.tv_base_nav_title);
        mRightTextBtn = findViewById(R.id.tv_base_nav_right);
        mRightTextBtn.setOnClickListener(this);
        mRightBtn = findViewById(R.id.ll_base_nav_right);
        mRightBtn.setOnClickListener(this);
        mRightBtnImage = findViewById(R.id.img_base_nav_right);
        mLineView = findViewById(R.id.v_base_nav_line);
    }

    /////////////////////////////////////////////////////////////////////////////////
    //
    //                      标题样式
    //
    /////////////////////////////////////////////////////////////////////////////////

    /**
     * 设置标题
     */
    public FCNavigationBar setTitle(String title) {
        mTitleView.setText(title);
        return this;
    }

    /**
     * 设置标题
     */
    public FCNavigationBar setTitle(int id) {
        mTitleView.setText(id);
        return this;
    }

    /**
     * 标题字体颜色
     */
    public FCNavigationBar setTitleColor(int color) {
        mTitleView.setTextColor(ContextCompat.getColor(getContext(), color));
        return this;
    }

    /**
     * 标题字体大小
     */
    public FCNavigationBar setTitleSize(int size) {
        mTitleView.setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
        return this;
    }

    /////////////////////////////////////////////////////////////////////////////////
    //
    //                      左边图片按钮样式
    //
    /////////////////////////////////////////////////////////////////////////////////

    /**
     * 设置左边按钮
     */
    public FCNavigationBar setLeftImageBtn(int img) {
        mLeftBtnImage.setImageResource(img);
        return this;
    }

    public FCNavigationBar setLeftImageBtnHidden(boolean isHidden) {
        if (isHidden) {
            mLeftBtnImage.setVisibility(GONE);
        } else {
            mLeftBtnImage.setVisibility(VISIBLE);
        }
        return this;
    }

    /////////////////////////////////////////////////////////////////////////////////
    //
    //                      右边文字按钮样式
    //
    /////////////////////////////////////////////////////////////////////////////////

    /**
     * 设置右边按钮
     */
    public FCNavigationBar setRightBtnText(String text) {
        mRightTextBtn.setText(text);
        mRightTextBtn.setVisibility(VISIBLE);
        return this;
    }

    /**
     * 设置右边按钮文字颜色
     */
    public FCNavigationBar setRightBtnTextColor(int color) {
        mRightTextBtn.setTextColor(color);
        return this;
    }

    /**
     * 设置右边按钮文字宽度
     */
    public FCNavigationBar setRightBtnTextWidth(int width) {
        RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams)mRightTextBtn.getLayoutParams();
        layoutParams.width = width;
        mRightTextBtn.setLayoutParams(layoutParams);
        return this;
    }


    /**
     * 设置右边按钮文字背景
     */
    public FCNavigationBar setRightBtnBgResource(int reg) {
        mRightTextBtn.setBackgroundResource(reg);
        return this;
    }

    /**
     * 设置右边按钮文字大小
     */
    public FCNavigationBar setRightBtnTextSize(int size) {
        mRightTextBtn.setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
        return this;
    }

    /**
     * 设置文字左边的图片
     * img 图片
     * padding 内间距（dp）
     */
    public FCNavigationBar setDrawableLeftImage(int img,int padding) {
        //设置TextView的drawableleft  
        mRightTextBtn.setGravity(Gravity.LEFT|Gravity.CENTER);
        mRightTextBtn.setCompoundDrawablesWithIntrinsicBounds(getResources().getDrawable(img),null,null,null);
        mRightTextBtn.setCompoundDrawablePadding(padding);//设置图片和text之间的间距  
        return this;
    }

    /////////////////////////////////////////////////////////////////////////////////
    //
    //                      右边图片按钮
    //
    /////////////////////////////////////////////////////////////////////////////////

    /**
     * 设置右边按钮图片
     */
    public FCNavigationBar setRightImageBtn(int img) {
        mRightBtnImage.setImageResource(img);
        mRightBtnImage.setVisibility(VISIBLE);
        return this;
    }

    /**
     * 设置背景颜色
     */
    public FCNavigationBar setBgColor(int color) {
        mRootView.setBackgroundColor(color);
        return this;
    }

    /**
     * 内容显示在系统状态栏下方
     */
    public FCNavigationBar showStatusBar() {
        mRootView.setPadding(0, StatusBarUtils.getStatusBarHeight(getContext()),0,0);
        return this;
    }

    /////////////////////////////////////////////////////////////////////////////////
    //
    //                      是否隐藏下划线
    //
    /////////////////////////////////////////////////////////////////////////////////

    public FCNavigationBar setLineHidden(boolean hidden) {
        if (hidden) {
            mLineView.setVisibility(INVISIBLE);
        } else {
            mLineView.setVisibility(VISIBLE);
        }
        return this;
    }

    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.fl_base_nav_left) {
            if (mGzgNavigationListener != null) {
                mGzgNavigationListener.onNavigationClickListen(FCNavigationAction.NAV_LEFT_CLICK);
            }
        } else if (v.getId() == R.id.tv_base_nav_right) {
            if (mGzgNavigationListener != null) {
                mGzgNavigationListener.onNavigationClickListen(FCNavigationAction.NAV_RIGHT_CLICK);
            }
        } else if (v.getId() == R.id.ll_base_nav_right) {
            if (mGzgNavigationListener != null) {
                mGzgNavigationListener.onNavigationClickListen(FCNavigationAction.NAV_RIGHT_CLICK);
            }
        }
    }
}
